package sz.szsmk.citizencard.mvp.contract;

import android.content.Context;

import sz.szsmk.citizencard.model.network.bean.response.CheckIsChargeRes;
import sz.szsmk.citizencard.model.network.bean.response.GetCodeResponse;
import sz.szsmk.citizencard.model.network.bean.response.GetOrderOpenidRes;
import sz.szsmk.citizencard.model.network.bean.response.ProtocolsRes;
import sz.szsmk.citizencard.model.network.bean.response.ProtocolsShowRes;
import sz.szsmk.citizencard.model.network.bean.response.QueryCitizenCardRes;
import sz.szsmk.citizencard.model.network.bean.response.QueryUserCardRes;
import sz.szsmk.citizencard.model.network.bean.response.QueryUserCardResponse;
import sz.szsmk.citizencard.model.network.bean.response.SeleciUserAuthRes;
import sz.szsmk.citizencard.model.network.bean.response.UpdataVersionRes;
import sz.szsmk.citizencard.model.network.bean.response.UserInfoRes;
import sz.szsmk.citizencard.model.network.bean.response.VerifyBindNgUserRes;
import sz.szsmk.citizencard.model.network.dzbean.req.PreAuthThirdRes;
import sz.szsmk.citizencard.model.network.dzbean.res.BaseBean;
import sz.szsmk.citizencard.model.network.dzbean.res.CheckIsRealNameRes;
import sz.szsmk.citizencard.model.network.dzbean.res.GetOpenIdRes;
import sz.szsmk.citizencard.model.network.dzbean.res.QueryDzsmkAgreeMentRes;
import sz.szsmk.citizencard.ui.base.IBaseContact;

/**
 * Created by wangzhongfu on 2017/6/6.
 */

public interface IMainContact {
    interface IMainPresenter<T extends IBaseContact.IBaseView> extends IBaseContact.IBasePresenter {
        void sendMainRequest();

        void checkIsOpenElecCard(String openId);

        void checkIsCharge();

        void getOpenId();

        void queryDzsmkAgreement(String id);

        void addPush(String access_token);

        void checkVersion(String versionName);

        void recordUserFunction(int funId);

        void getGestureIsOpen(Context context);


        void getGetOrderId(String url, String type);

        void getAuthType();

        void queryCitizenCard();

        void queryUserCard(String s, String type);

        void getConfig();

        void getProtocols(String sceneNo);

        void showProtocols(String sceneNo);

        void addUserAppAgreementRecord(String clientVersion, String operateSystem, String sceneNo);
    }

    interface IMainView extends IBaseContact.IBaseView {
        // 获得数据失败
        void updataError();

        // 获得数据成功
        void updataSuccess(GetCodeResponse loginResponse);

        void checkIsOpenElecCardSuccess(CheckIsRealNameRes loginResponse);

        void checkIsOpenElecCardError(CheckIsRealNameRes preAuthRes);

        void checkIsChargeFail();

        void checkIsChargeSucc(CheckIsChargeRes ibaseBean);

        void queryDzsmkAgreementFail(QueryDzsmkAgreeMentRes response);

        void queryDzsmkAgreementSucc();

        void getOpenIdSucc(GetOpenIdRes response);

        void getOpenIdFail(GetOpenIdRes response);

        void addPushSucc();

        void addPushFail();

        void checkVersionSucc(UpdataVersionRes response);

        void checkVersionFail();

        void mainPageFail();

        void preAuthThirdSucc(String id);

        void preAuthThirdFail(PreAuthThirdRes preAuthRes);

        void recordUserFunctionSucc();

        void recordUserFunctionFail();

        void getAuthTypeFail();

        void getAuthTypeSucc();

        void getGetOrderIdFail();

        void getGetOrderIdSucc(GetOrderOpenidRes response, String url, String type);

        void queryCitizenCardSucc(QueryCitizenCardRes response);

        void queryCitizenCardFail(QueryCitizenCardRes response);

        // 获得数据成功
        void queryUserCardSuccess(QueryUserCardRes response);

        void queryUserCardSuccess(QueryUserCardResponse response);

        void queryUserCardFalie(String msg);

        void verifyBindNgUserSucc(VerifyBindNgUserRes verifyBindNgUserRes, Object ng_url);

        void toBindNgUserSucc(VerifyBindNgUserRes verifyBindNgUserRes, Object ng_url);


        void verifybindWalletuserSucc(VerifyBindNgUserRes verifyBindNgUserRes, Object ng_url);

        void toBindWalletUserSucc(VerifyBindNgUserRes verifyBindNgUserRes, Object ng_url);


        void selectUserAuthSucc(SeleciUserAuthRes seleciUserAuthRes, String type);

        void getProtocolsSucc(ProtocolsRes protocolsRes);

        void getProtocolsFail();

        void showProtocolsSucc(ProtocolsShowRes protocolsShowRes);

        void showProtocolsFail();

        void addUserAppAgreementRecordSucc(sz.szsmk.citizencard.model.network.bean.response.BaseBean baseBean);

        void addUserAppAgreementRecordFail();
        void getUserComSucc(UserInfoRes userInfoRes);
    }
}
